// 封装的是具体的接口请求方法
// 注意：每个方法只负责请求一个url地址
import request from '@/utils/request' // 引入自定义axios函数
/* import store from '@/store' // 引入store对象 */

// 注册接口：导出接口方法，为了在逻辑页面引入调用
export const registerAPI = ({ username, password, repassword }) => {
  // 原地是一个Promise对象（内部包含原生ajax请求）
  // retun这个promise对象到逻辑页面，去那边对promise对象提取结果
  return request({
    url: '/api/reg',
    method: 'POST',
    // params的对象参数名和值，会出现在url？后面拼接给后台（query查询字符串）
    // data 拼接在请求体里（body参数）
    data: {
      username,
      password
    }
  })
}

// 登录接口
export const loginAPI = ({ username, password }) => {
  // 原地是一个Promise对象（内部包含原生ajax请求）
  // retun这个promise对象到逻辑页面，去那边对promise对象提取结果
  return request({
    url: '/api/login',
    method: 'POST',
    // params的对象参数名和值，会出现在url？后面拼接给后台（query查询字符串）
    // data 拼接在请求体里（body参数）
    data: {
      username,
      password
    }
  })
}

// 获取用户
export const getUserInfoAPI = () => {
  return request({
    url: '/my/userinfo'
    // 默认get
    /*  headers: {
        Authorization: store.state.token
      } */
  })
}

/**
 * 更新-用户基本资料
 * @param {*} param0 { id: 用户id, email: 用户邮箱, nickname: 用户昵称, user_pic: 用户头像地址, username: 用户名 }
 * @returns Promise对象
 */
export const updateUserInfoAPI = ({ id, email, nickname, user_pic, username }) => {
  return request({
    url: '/my/userinfo',
    method: 'PUT',
    data: {
      id,
      email,
      nickname,
      user_pic,
      username
    }
  })
}

/**
 * 更新-用户头像
* @param {*} avatar 头像的base64字符串
* @returns Promise对象
*/
export const updateAvatarAPI = (data) => {
  return request({
    url: '/my/update/avatar',
    method: 'POST',
    data
  })
}

/**
 * 更新-用户密码
 * @param {*} param0 { old_pwd: 旧密码, new_pwd: 新密码, re_pwd: 新密码确认 }
 * @returns Promise对象
 */
export const updatePwdAPI = ({ old_pwd, new_pwd, re_pwd, username }) => {
  return request({
    url: '/my/updatepwd',
    method: 'POST',
    data: {
      old_pwd,
      new_pwd,
      re_pwd,
      username
    }
  })
}

/**
 * 发布文章
 * @param {*} fd 表单对象
 * @returns Promise对象
 */
export const uploadArticleAPI = (fd) => {
  return request({
    url: '/my/article/add',
    method: 'POST',
    data: fd // 参数要的是表单对象, 不能写普通对象, axios内部会判断, 如果是表单对象, 传递的请求体会设置Content-Type: form-data与后端对应
  })
}
export const updateArticleAPI = (fd) => {
  return request({
    url: '/my/article/update',
    method: 'POST',
    data: fd // 参数要的是表单对象, 不能写普通对象, axios内部会判断, 如果是表单对象, 传递的请求体会设置Content-Type: form-data与后端对应
  })
}
export const upload = (fd) => {
  return request({
    url: '/my/article/upload',
    method: 'POST',
    data: fd // 参数要的是表单对象, 不能写普通对象, axios内部会判断, 如果是表单对象, 传递的请求体会设置Content-Type: form-data与后端对应
  })
}

/**
 * 获取文章列表
 * @param {*} param0 { pagenum: 当前页码数, pagesize: 当前页条数, where: 文章来源, state: 文章状态 }
 * @returns Promise对象
 */
export const getArticleListAPI = ({ pagenum, pagesize, where, state, cateId } = {}) => {
  return request({
    url: '/my/article/list',
    method: 'POST',
    data: {
      cateId,
      pagenum,
      pagesize,
      where,
      state
    }
  })
}

/**
 * 获取-文章详情
 * @param {*} id 文章id
 * @returns Promise对象
 */
export const getArticleDetailAPI = (id) => {
  return request({
    url: '/my/article/info',
    params: {
      id
    }
  })
}

export const deleteArticle = id => {
  return request({
    url: '/my/article/delete',
    method: 'POST',
    data: {
      id
    }
  })
}
